#pragma once 

//采用带头节点的单链表实现队列


typedef int DataType;

typedef struct QueueNode
{   
    struct QueueNode* next;
    DataType data;
}QNode;


typedef struct Queue
{
    QNode* front;
    QNode* back;
}Queue;

//初始化
void QueueInit(Queue* q);

//入队列
void QueuePush(Queue* q, DataType data);

//出队列
void QueuePop(Queue* q);

//获取队头元素
DataType QueueFront(Queue* q);

//获取队尾元素
DataType QueueBack(Queue* q);
    
//获取队列中有效元素的个数
int QueueSize(Queue* q);

//检测队伍中是否为空
int QueueEmpty(Queue* q);

//销毁
void QueueDestroy(Queue* q);

